package com.yonyou.wdt.qimenmodel.aliyun.api;

import com.yonyou.wdt.qimenmodel.taobao.api.ApiException;

import java.util.concurrent.Future;


/**
 * aliyun sdk请求入口。
 * 
 * @author lijie.ma
 * @since 1.0, May 19, 2014
 */
public interface AliyunClient {
	
	/**
	 * 执行阿里云API请求。
	 * @param <T>
	 * @param request 具体的请求
	 * @return
	 * @throws ApiException
	 */
	public <T extends com.yonyou.wdt.qimenmodel.aliyun.api.AliyunResponse> T execute(com.yonyou.wdt.qimenmodel.aliyun.api.AliyunRequest<T> request) throws ApiException ;
	
	/**
	 * 异步执行阿里云API请求。
	 * @param <T>
	 * @param request 具体的请求
	 * @return
	 * @throws ApiException
	 */
	public <T extends com.yonyou.wdt.qimenmodel.aliyun.api.AliyunResponse> Future<T> executeAsync(com.yonyou.wdt.qimenmodel.aliyun.api.AliyunRequest<T> request, com.yonyou.wdt.qimenmodel.aliyun.api.AliyunAsyncHandler<T> asyncHandler) throws ApiException ;
}
